#ifndef GY_TIMER_H
#define GY_TIMER_H

#include "GY_BasicsCalculators.h"
#include <QTimer>

class GY_CONTROLLIBRARY_EXPORT GY_Timer : public GY_BasicsCalculators
{
    Q_OBJECT

public:
    explicit Q_INVOKABLE GY_Timer(const QString &guid,QGraphicsItem *parent = nullptr);
    ~GY_Timer();

private:
    /**
     * @brief initializationPropertyInfo 初始化属性信息
     */
    void initializationPropertyInfo();
    /**
     * @brief updateTimer 更新时间
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateTimer(const QString &name, const QVariant &value);
    /**
     * @brief updatePeriod 更新时间跨度
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updatePeriod(const QString &name, const QVariant &value);
    /**
     * @brief updateRepeat 更新?
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateRepeat(const QString &name, const QVariant &value);
    /**
     * @brief updateSynchronize 更新
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateSynchronize(const QString &name, const QVariant &value);
    /**
     * @brief updateEnabled 更新
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateEnabled(const QString &name, const QVariant &value);
    /**
     * @brief updatePupdateEnsureEveryPeriodExecuteseriod 更新
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateEnsureEveryPeriodExecutes(const QString &name, const QVariant &value);

public:
    /**
     * @brief doStart 开始计时
     */
    void doStart();
    /**
     * @brief doStop 计时暂停
     */
    void doStop();
    /**
     * @brief doReset 计时重置
     */
    void doReset();

public:
    /**
     * @brief evElapsed 发生事件
     */
    void evElapsed();

private:
    //定时器
    QTimer *m_pTimer;

};

#endif // GY_TIMER_H
